home *** CD-ROM | disk | FTP | other *** search
- ;
- ;----- call3.mac Small-C arithmetic and logical library
- ;
- ;
- ; part 3 switch routine
-
- ;
- ;
- ; EXECUTE "SWITCH" STATEMENT
- ;
- ; HL = SWITCH VALUE
- ; (SP) -> SWITCH TABLE
- ; DW ADDR1, VALUE1
- ; DW ADDR2, VALUE2
- ; ...
- ; DW 0
- ; [JMP default]
- ; continuation
- ;
- CCSWITCH::
- XCHG ;;DE = SWITCH VALUE
- POP H ;;HL -> SWITCH TABLE
- SWLOOP: MOV C,M
- INX H
- MOV B,M ;;BC -> CASE ADDR, ELSE 0
- INX H
- MOV A,B
- ORA C
- JZ SWEND ;;DEFAULT OR CONTINUATION CODE
- MOV A,M
- INX H
- CMP E
- MOV A,M
- INX H
- JNZ SWLOOP
- CMP D
- JNZ SWLOOP
- MOV H,B ;;CASE MATCHED
- MOV L,C
- SWEND: PCHL
-
- END
-